/*
 * @Author: Du Weixing duweixing@sgsimulation.com
 * @Date: 2024-10-15 14:18:30
 * @LastEditors: Du Weixing duweixing@sgsimulation.com
 * @LastEditTime: 2024-12-04 20:42:36
 * @FilePath: \SGFEM\Solver\SectionCalculator\BeamSection\FormulaMethod\Interface\BeamSectionFormulaCalculatorFactory.h
 * @Description: PBEAML 梁标准截面属性使用解析公式计算类工厂
 * 
 * Copyright (c) 2024 by 神工仿真, All Rights Reserved. 
 */

#pragma once
#include "DataStructure/Common/SGNamespace.h"
#include "DataStructure/Input/Property/BeamSectionStandardTypes.h"
#include "../../Common/BeamSecPropCalculatorExport.h"
#include "IBeamSectionFormulaCalculator.h"

SG_NAMESPACE_OPEN
namespace FEMSolver {
namespace Element {

/** PBEAML 梁截面属性解析公式计算工厂类
 *
 * 通过`截面类型 type`创建一个截面计算类实例对象，并绑定到基类的智能指针上输出
 * 如果没有找到派生类对象，将返回一个空指针。
 */
class BeamSecPropCalculator_DECLSPEC BeamSectionFormulaCalculatorFactory
{
public:
    static SG::FEMSolver::Element::BeamSectionFormulaCalculatorSP Create (SG::DataStructure::FEM::BeamSectionStandardTypes type);
};

};  // end namespace Element
};  // end namespace FEMSolver
SG_NAMESPACE_CLOSE